package com.ruoyi.system.vo;

import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/**
 * 施工项目详情VO（用于“施工进度管理”模块的项目详细页面）
 */
@Data
public class ProjectDetailVO {
    // ====================== 1. 项目基础信息 ======================
    /** 项目ID */
    private Long projectId;

    /** 施工编号（如SG2025000001） */
    private String projectCode;

    /** 工地项目名称（如“XX小区A户型精装”） */
    private String projectName;

    /** 客户信息 */
    private String customerName; // 客户姓名
    private String customerPhone; // 客户手机号（支持点击拨打）

    /** 工地地址（详细地址，精确到门牌号） */
    private String projectAddress;
    /** 工地面积（单位：平方米） */
    private BigDecimal buildingArea;

    /** 设计师名称 （如“张三”） */
    private String designerName;

    /** 时间信息 */
    private LocalDate startDate; // 开工日期（格式：YYYY-MM-DD）
    private LocalDate endDate; // 竣工日期（格式：YYYY-MM-DD）
    private LocalDate expectedCheckinDate; // 预计入住日期（格式：YYYY-MM-DD）
    private String createTime; // 创建时间（格式：YYYY-MM-DD HH:mm）
    private String updateTime; // 最后更新时间（格式：YYYY-MM-DD HH:mm）

    /** 项目状态：1-进行中，2-暂停（文本描述 + 颜色标识） */
    private Integer projectStatus;
    private String projectStatusText; // 如“进行中”
    private String projectStatusColor; // 如“#4CAF50”（绿色-进行中，#FF5722-暂停）
    private String pauseReason; // 暂停原因（仅状态为“暂停”时展示）

    /** 其他信息 */
    private String remark; // 项目备注（特殊施工要求）
    private String createBy; // 创建人（操作人）

    // ====================== 2. 项目进度概览 ======================
    /** 当前阶段信息（高亮展示） */
    private String currentStageName; // 当前阶段名称（如“水电布线”）
    private Integer totalStageCount; // 总阶段数（项目已选阶段总数）
    private Integer completedStageCount; // 已完成阶段数
    private String progressRate; // 进度占比（如“30%”，用于前端进度条展示）

    // ====================== 3. 关联阶段详情列表 ======================
    /** 阶段列表（按阶段排序号升序，包含每个阶段的团队和事项信息） */
    private List<StageDetailVO> stageDetailList;

    // ====================== 4. 协同沟通汇总（可选） ======================
    /** 项目级协同沟通记录（非事项关联的全局沟通，如整体工期调整通知） */
    private List<CommunicationFileVO> projectCommunicationFiles;

    private Long customerId; // 客户ID
}